Add missing _v traits. is_bind_expression_v, is_placeholder_v and uses_allocator_v git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@282126 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/functional b/include/functional index d0b65b2..aec6092 100644 --- a/include/functional +++ b/include/functional 
@@ -212,6 +212,13 @@  template<class T> struct is_bind_expression;  template<class T> struct is_placeholder;   + // See C++14 20.9.9, Function object binders +template <class T> constexpr bool is_bind_expression_v + = is_bind_expression<T>::value; // C++17 +template <class T> constexpr int is_placeholder_v + = is_placeholder<T>::value; // C++17 + +  template<class Fn, class... BoundArgs>  unspecified bind(Fn&&, BoundArgs&&...);  template<class R, class Fn, class... BoundArgs> @@ -1970,10 +1977,20 @@  template<class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_bind_expression  : public __is_bind_expression<typename remove_cv<_Tp>::type> {};   +#if _LIBCPP_STD_VER > 14 +template <class _Tp> +constexpr size_t is_bind_expression_v = is_bind_expression<_Tp>::value; +#endif +  template<class _Tp> struct __is_placeholder : public integral_constant<int, 0> {};  template<class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_placeholder  : public __is_placeholder<typename remove_cv<_Tp>::type> {};   +#if _LIBCPP_STD_VER > 14 +template <class _Tp> +constexpr size_t is_placeholder_v = is_placeholder<_Tp>::value; +#endif +  namespace placeholders  {